/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.googlecode.httl.support.loaders;

import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletContext;

import com.googlecode.httl.support.Loader;
import com.googlecode.httl.support.loaders.InputStreamResource;

/**
 * ServletResource. (SPI, Prototype, ThreadSafe)
 * 
 * @see com.googlecode.httl.support.loaders.ServletLoader#load(String, String)
 * 
 * @author Liang Fei (liangfei0201 AT gmail DOT com)
 */
public class ServletResource extends InputStreamResource {

    private static final long serialVersionUID = 2499229996487593996L;
    
    private final String path;
    
    private final transient ServletContext servletContext;

    public ServletResource(Loader loader, String name, String encoding, String path, ServletContext servletContext) {
        super(loader, name, encoding);
        this.path = path;
        this.servletContext = servletContext;
    }

    public InputStream getInputStream() throws IOException {
        return servletContext.getResourceAsStream(path);
    }

}